package cn.bon.emp.service.impl;

import cn.bon.common.bean.JsonResult;
import cn.bon.common.tool.TimeUtils;
import cn.bon.emp.api.pojo.po.Org;
import cn.bon.emp.api.pojo.vo.NotGroupedVO;
import cn.bon.emp.mapper.EmpOrgMapper;
import cn.bon.emp.api.pojo.po.EmpOrg;
import cn.bon.emp.service.IEmpOrgService;
import cn.bon.emp.service.IOrgService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

/**
 * <p>
 * 用户所属机构冗余表 服务实现类
 * </p>
 *
 * @author luochao
 * @since 2023-12-09
 */
@Service
public class EmpOrgServiceImpl extends ServiceImpl<EmpOrgMapper, EmpOrg> implements IEmpOrgService {
    @Resource
    EmpOrgMapper empOrgMapper;

    /**
     * 将员工移除所在小组
     * @param empIds
     */
    @Override
    public void rmFromGroup(List<Long> empIds) {
        LambdaUpdateWrapper<EmpOrg> updateWrapper = new LambdaUpdateWrapper<>();
        updateWrapper.in(EmpOrg::getEmpId, empIds)
                .set(EmpOrg::getGroupId, null);
        this.update(updateWrapper);
    }

    /**
     * 将员工添加到指定组
     * @param groupId
     * @param empIds
     */
    @Override
    public void addEmps2Group(Long groupId, Long sectionId, List<Long> empIds) {
        LambdaUpdateWrapper<EmpOrg> updateWrapper = new LambdaUpdateWrapper<>();
        updateWrapper.in(EmpOrg::getEmpId, empIds)
                .set(EmpOrg::getGroupId, groupId)
                .set(EmpOrg::getSectionId, sectionId);
        this.update(updateWrapper);
    }

    /**
     * 获取指定组织下的所有员工Id
     * @param orgId 组织Id
     * @return
     */
    @Override
    public List<Long> getEmpIdsOf(Long orgId) {
        return empOrgMapper.getEmpIdsOf(orgId);
    }

    /**
     * 将属于orgId的orgId设为null  （从该组织中移除）
     * @param orgId
     */
    @Override
    public void rmOfOrg(Long orgId) {
        empOrgMapper.rmOfGroupId(orgId, TimeUtils.now());

        empOrgMapper.rmOfSectionId(orgId, TimeUtils.now());
    }
}
